package leetcode;

import java.util.Stack;

/**
 * 232.用栈实现队列
 * 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作（push、pop、peek、empty）：
 */
class MyQueue {

    //s1是实际存储元素的栈
    private Stack<Integer> s1 = new Stack<>();
    //s2是辅助栈
    private Stack<Integer> s2 = new Stack<>();

    public MyQueue() {

    }

    public void push(int x) {
        if(s1.isEmpty()){
            s1.push(x);
        }else{
            //s1中有元素
            //先将s1中的元素依次弹到s2中
            while(!s1.isEmpty()){
                s2.push(s1.pop());
            }
            //将新增元素放入s1中
            s1.push(x);
            //再把s2中的元素依次弹到s1中
            while(!s2.isEmpty()){
                s1.push(s2.pop());
            }
        }
    }

    public int pop() {
        return s1.pop();
    }

    public int peek() {
        return s1.peek();
    }

    public boolean empty() {
        return s1.isEmpty();
    }
}

public class Num_232 {
}
